package com.cyan.note.dto.admin;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.time.LocalDateTime;

/**
 * 超级管理员查看店长账户响应DTO
 * 严格按照数据隔离原则 - 仅返回系统级账户信息，不包含业务数据
 * 
 * @author ZhangzhenYu
 * @since 2025-01-14
 */
@Data
public class ManagerResponse {

    /**
     * 用户ID
     */
    private Long id;

    /**
     * 用户名（登录账号）
     */
    private String username;

    /**
     * 真实姓名
     */
    private String realName;

    /**
     * 手机号
     */
    private String phone;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 用户角色
     */
    private String role;

    /**
     * 角色显示名
     */
    private String roleName;

    /**
     * 所属店铺ID
     */
    private Long shopId;

    /**
     * 所属店铺名称
     */
    private String shopName;

    /**
     * 账户状态
     */
    private String status;

    /**
     * 状态显示名
     */
    private String statusName;

    /**
     * 最后登录时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime lastLoginTime;

    /**
     * 最后登录IP
     */
    private String lastLoginIp;

    /**
     * 账户创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createdAt;

    /**
     * 账户更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updatedAt;

    /**
     * 获取状态显示名
     */
    public String getStatusName() {
        if (status == null) {
            return "未知";
        }
        switch (status) {
            case "active":
                return "正常";
            case "inactive":
                return "未激活";
            case "locked":
                return "已锁定";
            default:
                return "未知";
        }
    }

    /**
     * 获取角色显示名
     */
    public String getRoleName() {
        if (role == null) {
            return "未知";
        }
        switch (role) {
            case "super_admin":
                return "超级管理员";
            case "manager":
                return "店长";
            case "worker":
                return "打手";
            default:
                return "未知";
        }
    }
}